home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 8 / FM Towns Free Software Collection 8.iso / t_os / wink24h / src / string.c < prev    next >
Text File  |  1994-06-01  |  2KB  |  78 lines

  1. #include    <ctype.h>
  2. #include    "defs.h"
  3.  
  4. BOOL    iskan(p)
  5. LONG    p;
  6. {
  7.     register int     c1,c2;
  8.  
  9.     c1 = *Cnv_ptr(p++) & 0xff;
  10.     c2 = *Cnv_ptr(p) & 0xff;
  11.     if ( iskanji(c1) && p != btm_ptr && iskanji2(c2) )
  12.     return TRUE;
  13.     else
  14.     return FALSE;
  15. }
  16. LONG    Nxt_line2(p)
  17. register LONG    p;
  18. {
  19.     int     ch,x;
  20.  
  21.     for ( x = 0 ; p < btm_ptr ; ) {
  22.     ch = *Cnv_ptr(p);
  23.     if ( ch == '\x0A' )
  24.         return ++p;
  25.         else if ( ch == '\t' ) {
  26.             p++;
  27.             if ( (x = ((x + TAB) / TAB) * TAB) >= MAX_X )
  28.                 return p;
  29.         } else if ( iskan(p) != FALSE ) {
  30.             if ( (x += 2) > MAX_X )
  31.                 return p;
  32.             p+=2;
  33.     } else if ( ch == '\x0D' ) {
  34.         p++;
  35.     } else {
  36.             p++;
  37.         if ( ++x >= MAX_X )
  38.         return p;
  39.     }
  40.     }
  41.     return p;
  42. }
  43. LONG    Bak_line2(ptr)
  44. LONG    ptr;
  45. {
  46.     LONG    s;
  47.     register LONG    p;
  48.  
  49.     if ( (p = ptr) != 0 && *Cnv_ptr(--p) == '\n' && p != 0 ) --p;
  50.     while ( p != 0 && *Cnv_ptr(p) != '\n' ) --p;
  51.     if ( p != 0 && *Cnv_ptr(p) == '\n' ) p++;
  52.     do { s = p; } while ( (p = Nxt_line2(s)) < ptr );
  53.  
  54.     return s;
  55. }
  56. /********** move to buff.c ************
  57. LONG    Nxt_line(p)
  58. register LONG    p;
  59. {
  60.     while ( p < btm_ptr ) {
  61.     if ( *Cnv_ptr(p++) == '\n' )
  62.         break;
  63.     }
  64.     return p;
  65. }
  66. ***************************************/
  67. LONG    Bak_line(ptr)
  68. LONG    ptr;
  69. {
  70.     register LONG    p;
  71.  
  72.     if ( (p = ptr) != 0 && *Cnv_ptr(--p) == '\n' && p != 0 ) --p;
  73.     while ( p != 0 && *Cnv_ptr(p) != '\n' ) --p;
  74.     if ( p != 0 && *Cnv_ptr(p) == '\n' ) p++;
  75.  
  76.     return p;
  77. }
  78.